[BX]、loop、inc、dec指令 |
您所在的位置:网站首页 › 汇编语言 clc › [BX]、loop、inc、dec指令 |
1、[BX] [BX]表示一个内存单元,它的偏移地址在bx中。 mov ax,[bx] 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。 2、符号(约定方便阅读和理解) 描述性符号“()” 表示一个寄存器或一个内存单元中的内容。 例:ax中内容为0010H (ax)=0010H 对于mov ax,[2] (ax)=((ds)*16+2) 对于mov [2],ax ((ds)*16+2)=(ax) 符号idata 表示常量。 3、inc(+1),dec(-1) inc bx 把bx中的值加1 dec bx 把bx中的值减1 4、loop指令(含义“循环”) 格式:loop 标号 CPU执行loop指令时,要进行两个操作 cx=cx-1判断cx中的值,不为零则转至标号处执行程序,为零则向下执行通常用loop指令来实现循环,cx中存放循环次数。 实现循环功能的框架 mov cx,循环次数 s: 循环执行的程序段 loop s例:编程计算2^12 code cs:code code segment start: mov ax,2 mov cx,11 s:add ax,ax loop s mov ax,4c00h int 21h code ends end start在源汇编程序中,数据不能以字母开头,所以前面要加0。 例:将ffff:0~ffff:b中的八位数据,累加到16位寄存器中 需要解决的问题:类型的匹配以及结果的不超界。 方法: 用一个16位寄存器作为中介 将内存单元中的八位数据赋值到1个16位寄存器ax中,再将ax中的数据加到dx上,从而使两个运算对象的类型匹配且不超界。 如: mov al,ds:[0] mov ah,0 add dx,ax例: assume cs:code code segment mov ax,0ffffh mov ds,ax mov bx,0 mov dx,0 mov cx,12 s: mov al,[bx] mov ah,0 add dx,ax inc bx loop s mov ax,4c00h int 21h code ends end5、段前缀 “ds:”、“cs:”在汇编语言中称为段前缀 例:mov ax,cs:[0] 6、一段安全空间 在内存中写入数据要考虑这片空间是否安全(即是否为空) 一般程序和操作系统不会使用0:200~0::2FF。 例:拷贝 assume cs:code code segment mov ax,2000 mov ds,ax mov ax,0 mov es,ax mov bx,0 mov cx,16 s: mov ax,ds:[bx] mov es:[bx],ax inc bx loop s code ends end
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |